<?php


# CUI/CF valifation function
# CF = 'R'+ CUI
function validate_cif($cif){
	$firstLetter = substr($cif,0,1);
	# echo "First ".$firstLetter."<br>" ;
	# echo "lcfirst ".lcfirst($firstLetter)."<br>" ;
	if (lcfirst($firstLetter) == "r")
		$theActualCif = substr($cif,1);  	//CF
	else
		$theActualCif = $cif;  //CUI
	
	# echo "theActualCif ".$theActualCif."<br>";	
	# echo "CUI ".$cif."<br>";
	
	return validate_cui($theActualCif);
}

# validate CUI
function validate_cui($cif)
{
        // Cheia de validare: 753217532
        static $validare="753217532";
        static $lungimeValidare=9; // strlen($validare)

		// Verifica daca e numar 
		if ((int)$cif == 0)
			return 0;
        // Verifică dacă e întreg
        if ((int)$cif != $cif)
                return 0;

        $cif = (int) $cif;

        if (strlen($cif) > 10)
                return 0;

        // Extrage cifra de control
        $cifra_control = substr($cif, -1);
        $cif = substr($cif, 0, -1);

        // Adaugă zerouri în prefix pâna când CIF are 9 cifre
        while (strlen($cif)<9)
                $cif = '0' . $cif;

        // Calculează suma de control;
        // nu mai este nevoie de inversare (avem zerouri în primele poziții)
        $suma = 0;
        for($i=0; $i<$lungimeValidare; $i++)
                $suma += $cif[$i] * $validare[$i];

        $rest = $suma*10 % 11;

        if ($rest == 10)
                $rest=0;

        if ($rest == $cifra_control)
			return 1;
		else return 0;
 }

?>
